SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE  PROC [dbo].[SP_TXMVTO_CNTB_I24]    
/*-------------------------------------------------------------------*/    
/*----- Empresa           : OFISIS S.A.                          ----*/    
/*----- Cliente           : OFISIS S.A.                          ----*/    
/*----- Sistema           : Contabilidad                         ----*/    
/*----- Modulo            : Empresa                              ----*/    
/*----- Programa          : Ajuste por redondeo en l-nea xa un voucher ----*/    
/*----- Nombre            : SP_TXMVTO_CNTB_I24                   ----*/    
/*----- Script            : TXMVTO_CNTB                          ----*/    
/*----- Desarrollado por  : LGP                                  ----*/    
/*----- Fecha             : 08/02/2003                           ----*/    
/*----- Base de Datos     : MS SQL Server                        ----*/    
/*----- Version BD        : 8.0                                  ----*/    
/*-------------------------------------------------------------------*/    
/*-------------------------------------------------------------------*/  
/*----- Modificado 1 por  : Percy Garcia                         ----*/  
/*----- Fecha Modifica    : 12/11/2003                           ----*/  
/*----- Detalle Modifica  : SE AUMENTO LA LINEA PARA ------*/  
/*-----  QUE DEVUELVA SEC. DE ASTO   ----*/  
/*-------------------------------------------------------------------*/  
/*-------------------------------------------------------------------*/    
/*----- Drop proc SP_TXMVTO_CNTB_I24                             ----*/    
/*----- Grant all on SP_TXMVTO_CNTB_I24 to PUBLIC                ----*/    
/*----- Exec SP_TXMVTO_CNTB_I24 '01', '001', 1, 'SOL', '006', '0000000004',     
 2003, 2, '08/02/2003', '75810', '65710', 0.5, 'DIG'         ----*/    
/*-------------------------------------------------------------------*/    
    
@ISCO_EMPR TD_VC_002,
@ISCO_USUA          TD_VC_008,
@IDFE_USUA          TD_DT_001,
@ISCO_UNID_CNTB TD_VC_003,    
@INNU_CNTB_EMPR TD_IN_001_CONT,    
@ISCO_MONE_CNTB TD_VC_003,    
@ISCO_OPRC_CNTB TD_VC_003,    
@ISNU_ASTO TD_VC_010,    
@INNU_ANNO TD_IN_004_ANNO,    
@INNU_MESE TD_IN_002_MESE,    
@IDFE_ASTO_CNTB TD_DT_001,    
@ISCO_GANA_REDO TD_VC_020,    
@ISCO_PERD_REDO TD_VC_020,    
@INTO_SALD TD_NU_016_004,    
@ISSI_MVTO_CNTB TD_VC_003    
--          with encryption
as    
Declare     
@VNNU_SECU TD_IN_002,    
@VNFA_CAMB_DIAR TD_NU_015_006,    
@VSST_CNTA_NATU TD_VC_003,    
@VSST_AUXI_EMPR TD_VC_001,    
@VSTI_AUXI_REGA TD_VC_001,    
@VSCO_AUXI_REGA TD_VC_020,    
@VSTI_AUXI_REPE TD_VC_001,    
@VSCO_AUXI_REPE TD_VC_020,    
@VSST_ORDE_SERV TD_VC_001,    
@VSCO_ORDE_REGA TD_VC_020,   
@VSCO_ORDE_REPE TD_VC_020,     
@VSCO_EMPR  TD_VC_002
    
Begin    
    
  Select @VSTI_AUXI_REGA = NULL    
  Select @VSCO_AUXI_REGA = NULL    
  Select @VSTI_AUXI_REPE = NULL    
  Select @VSCO_AUXI_REPE = NULL    
    
  Select @VSTI_AUXI_REGA = TI_AUXI_REGA,    
         @VSCO_AUXI_REGA = CO_AUXI_REGA,    
         @VSTI_AUXI_REPE = TI_AUXI_REPE,    
         @VSCO_AUXI_REPE = CO_AUXI_REPE,    
         @VSCO_ORDE_REGA = CO_ORDE_REGA,
         @VSCO_ORDE_REPE = CO_ORDE_REPE
  From   TMPARA_CONT    
  Where  CO_EMPR = @ISCO_EMPR     
    
  Select @VNNU_SECU  = IsNull(MAX(NU_SECU), 0) + 1    
  From  TXMVTO_CNTB     
  Where    
  CO_EMPR  = @ISCO_EMPR  And    
  NU_CNTB_EMPR  = @INNU_CNTB_EMPR And    
  CO_UNID_CNTB  = @ISCO_UNID_CNTB And    
  CO_OPRC_CNTB  = @ISCO_OPRC_CNTB And    
  NU_ANNO  = @INNU_ANNO  And    
  NU_MESE  = @INNU_MESE  And    
  NU_ASTO  = @ISNU_ASTO    

Select @VSCO_EMPR = ''
Select @VSCO_EMPR = CO_EMPR 
From TTIDEN_OPER 
Where CO_EMPR = @ISCO_EMPR 
And NU_CNTB_EMPR = @INNU_CNTB_EMPR 
And CO_OPRC_CNTB = @ISCO_OPRC_CNTB
And ID_OPRC In ('012', '013')
    
/*-------------- CASO 1 GANANCIA - ---------------*/    
If ROUND(@INTO_SALD,2) > 0.00 And Len(IsNull(@VSCO_EMPR, '')) = 0
Begin    
 Select @VSST_CNTA_NATU = ST_CNTA_NATU, @VSST_AUXI_EMPR = ST_AUXI_EMPR    
    from TMPLAN_EMPR    
  where CO_EMPR = @ISCO_EMPR     
   and CO_CNTA_EMPR = @ISCO_GANA_REDO    
   And NU_ANNO = 9999    
    
 If @VSST_AUXI_EMPR = 'N'    
   Begin     
     Select @VSTI_AUXI_REGA = NULL    
     Select @VSCO_AUXI_REGA = NULL    
   End    
    
 if @VSST_CNTA_NATU = 'COM'    
   Select @VNFA_CAMB_DIAR = FA_CMPR_OFIC    
     from TCFACT_CAMB    
    where CO_MONE != @ISCO_MONE_CNTB     
     and FE_CAMB = @IDFE_ASTO_CNTB    
 Else    
  Select @VNFA_CAMB_DIAR = FA_VNTA_OFIC    
     from TCFACT_CAMB    
    where CO_MONE != @ISCO_MONE_CNTB     
     and FE_CAMB = @IDFE_ASTO_CNTB    
      
 if @VNFA_CAMB_DIAR IS NULL     
  Select @VNFA_CAMB_DIAR = 1.000000    
    
 Insert Into TXMVTO_CNTB    
  (CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB,    
  NU_ANNO, NU_MESE, NU_ASTO, NU_SECU, FE_ASTO_CNTB,    
  CO_CNTA_EMPR, TI_AUXI_EMPR, CO_AUXI_EMPR, TI_DOCU,    
  NU_DOCU, FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER, IM_MVTO_ORIG,     
  IM_MVTO_CNTB, DE_GLOS, SI_MVTO_CNTB, FE_DOCU_VENC, FA_CAMB_DIAR,     
  FE_DOCU_REFE, NU_PROC, NU_PROC_SECU, ST_GEST, ST_REDO, 
  CO_ORDE_SERV,CO_USUA_CREA, FE_USUA_CREA,CO_USUA_MODI, FE_USUA_MODI)     
 Values (     
 @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @INNU_ANNO, @INNU_MESE,     
 @ISNU_ASTO, @VNNU_SECU, @IDFE_ASTO_CNTB, @ISCO_GANA_REDO, @VSTI_AUXI_REGA, @VSCO_AUXI_REGA,     
 NULL, NULL, NULL, 'PAC', @ISCO_MONE_CNTB, 1.000000, 'ABO', 0.00, ABS(@INTO_SALD),     
 'AJUSTE POR REDONDEO', @ISSI_MVTO_CNTB, NULL, @VNFA_CAMB_DIAR, NULL, NULL, NULL, 'N',    
 'S', NullIf(Rtrim(@VSCO_ORDE_REGA),''),@ISCO_USUA , @IDFE_USUA, @ISCO_USUA, @IDFE_USUA)    
End    
    
/*-------------- CASO 2 PERDIDA ---------------*/    
Else If ROUND(@INTO_SALD,2) < 0.00  And Len(IsNull(@VSCO_EMPR, '')) = 0   
Begin    
 Select @VSST_CNTA_NATU = ST_CNTA_NATU, @VSST_AUXI_EMPR = ST_AUXI_EMPR    
  From  TMPLAN_EMPR    
  Where CO_EMPR = @ISCO_EMPR     
   And  CO_CNTA_EMPR = @ISCO_PERD_REDO    
   And  NU_ANNO = 9999    
    
 If @VSST_AUXI_EMPR = 'N'    
   Begin     
     Select @VSTI_AUXI_REPE = NULL    
     Select @VSCO_AUXI_REPE = NULL    
   End    
    
 If @VSST_CNTA_NATU = 'COM'    
   Select @VNFA_CAMB_DIAR = FA_CMPR_OFIC    
     from TCFACT_CAMB    
    where CO_MONE != @ISCO_MONE_CNTB     
     and FE_CAMB = @IDFE_ASTO_CNTB    
 Else    
  Select @VNFA_CAMB_DIAR = FA_VNTA_OFIC    
     from TCFACT_CAMB    
    where CO_MONE != @ISCO_MONE_CNTB     
     and FE_CAMB = @IDFE_ASTO_CNTB    
      
 if @VNFA_CAMB_DIAR IS NULL     
  Select @VNFA_CAMB_DIAR = 1.000000    
    
 Insert Into TXMVTO_CNTB(    
  CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO, NU_MESE,     
  NU_ASTO, NU_SECU, FE_ASTO_CNTB,CO_CNTA_EMPR, TI_AUXI_EMPR, CO_AUXI_EMPR, TI_DOCU,NU_DOCU, FE_DOCU,     
  TI_CAMB, CO_MONE, FA_CAMB, TI_OPER, IM_MVTO_ORIG, IM_MVTO_CNTB, DE_GLOS, SI_MVTO_CNTB, FE_DOCU_VENC,     
  FA_CAMB_DIAR, FE_DOCU_REFE, NU_PROC, NU_PROC_SECU, ST_GEST, ST_REDO, 
  CO_ORDE_SERV,CO_USUA_CREA, FE_USUA_CREA,CO_USUA_MODI, FE_USUA_MODI)    
 Values ( @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @INNU_ANNO, @INNU_MESE,     
 @ISNU_ASTO, @VNNU_SECU, @IDFE_ASTO_CNTB, @ISCO_PERD_REDO, @VSTI_AUXI_REPE, @VSCO_AUXI_REPE,     
 NULL, NULL, NULL, 'PAC', @ISCO_MONE_CNTB, 1.000000, 'CAR', 0.00, ABS(@INTO_SALD),    
 'AJUSTE POR REDONDEO', @ISSI_MVTO_CNTB, NULL, @VNFA_CAMB_DIAR, NULL, NULL, NULL, 'N',    
 'S', NullIf(Rtrim(@VSCO_ORDE_REPE),''),@ISCO_USUA , @IDFE_USUA, @ISCO_USUA, @IDFE_USUA)    
    
End    
End    
Select @VNNU_SECU  
Return    
/*----------------------------------- Fin -------------------------------------*/


GO
